// 给定一个整数数组，编写一个函数，找出索引m和n，只要将索引区间[m,n]的元素排好序，
// 整个数组就是有序的。注意：n-m尽量最小，也就是说，找出符合条件的最短序列。
// 函数返回值为[m,n]，若不存在这样的m和n（例如整个数组是有序的），请返回[-1,-1]。

// 示例：
// 输入： [1,2,4,7,10,11,7,12,6,7,16,18,19]
// 输出： [3,9]

/////////两种方法：1. sort出一个新数字，比较两个数组就行，不过数据量太大的时候排序不是一个好选择
//////////////////2.两次遍历，假如找最右端，就需要找左边是否存在大于它的数
// 提示：
//     0 <= len(array) <= 1000000

/**
 * @param {number[]} array
 * @return {number[]}
 */
 var subSort = function(array) {
     let len = array.length;
     let max = Number.MIN_SAFE_INTEGER;
     let left = -1, right = -1;
     for(let i = 0; i < len; i++) {
        if (array[i] >= max) {
            max = array[i];
        } else {
            right = i;
        }
     }
     let min = Number.MAX_SAFE_INTEGER;
     for(let i = len - 1; i >= 0; i--) {
        if (array[i] <= min) {
            min = array[i];
        } else {
            left = i;
        }
     }
     return [left, right];
};
console.log(subSort([1,2,4,7,10,11,7,12,6,7,16,18,19]));

